<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">

<link href="css/zTreeStyle/zTreeStyle.css" rel="stylesheet" type="text/css">					<!-- zTree CSS函式庫 -->
<link href="css/redmond/jquery-ui-1.10.3.custom.min.css" rel="stylesheet" type="text/css">	<!-- jquery UI CSS函式庫 -->
<link href="css/selfTemplate.css" rel="stylesheet" type="text/css">							<!-- 自建CSS函式庫 -->
					
<script src="js/jquery-1.10.2.min.js" type="text/javascript"></script>								<!-- jquery 函式庫 -->
<script src="js/jquery-ui-1.10.3.custom.js" type="text/javascript"></script>					<!-- jquery UI 函式庫 -->
<script src="js/jquery.cookie.js" type="text/javascript"></script>								<!-- 操做cookie用 -->
<script src="js/jquery.ztree.core-3.5.min.js" type="text/javascript"></script>						<!-- zTree 的核心函式庫，選擇SVN用 -->
<script src="js/jquery.ztree.excheck-3.5.min.js" type="text/javascript"></script>				<!-- zTree 的延伸函式庫，選擇SVN用 -->
<script src="js/widgets.js" type="text/javascript"></script>									<!-- 自建函式庫 -->


<style type="text/css">
	div#mainDiv {
		padding-top:20px;
		padding-buttom:20px; 
		padding-right:20px;
		padding-left:15px; 
	}

	div#divTabs { vertical-align: text-top; }
</style>

<script type="text/javascript">


/** 為了產生zTree的參數 **/
var setting = { check:{ enable:true},data:{simpleData: {enable:true}} };
var initialValue = 65;

function confirmRedep(obj) {
	
	var fileName= $(obj).val()[0];
	var squadId = $(obj).attr("squadId");
	
	$("#diaConfirm").html("確定要重新部署"+fileName+"?");
	
	$("#diaConfirm").prop("title",squadId).css("visibility", "visible").dialog({
		resizable:false,width:300,show:"fold",hide:"fold",
		buttons : {
			"確定" : function() {
				redep(fileName,squadId);
				$(this).dialog("close");
			},"關閉" :function() {
				$(this).dialog("close");
			}
		}
	});
				
				
}

//當雙擊某個模組時，重新部署它
function redep(fileName,squadId) {
	
	clearErrorMsg();
	windowFreeze();
	
	var msgBoard = $("textarea#depRes");
	
	msgBoard.val("");
	msgBoard.val( "開始重新部署"+squadId+"內的"+fileName+"\n\n" );
	msgBoard.val( msgBoard.val()+"下線...." );
	
	var depId = new Date().getTime(); //為了讓使用者可以看到執行的步驟，所以先這記錄這整組行動的識別
	
	$.ajax({ type:'post',url:"ReDepMemphis",dataType:'text',async:false,
		data: {depId:depId,empId:$.cookie("empId"),isDep:"false",fileName:fileName,
			apURL:$("#apURL").val(),apUSR:$("#apUSR").val(),apPWD:$("#apPWD").val(),apPORT:$("#apPORT").val(), 
			svnURL:$("#svnURL").val(),svnUSR:$("#svnUSR").val(),svnPWD:$("#svnPWD").val(),squadId:squadId },
			success : function(res) {
			if ( res == "success" ) {
				msgBoard.val( msgBoard.val()+"成功\n" );
			} else {
				msgBoard.val( msgBoard.val()+"失敗!!\n" );
				$("#errLongMsg").html(res);
			}
		}, error : function(xhr, ajaxOptions, thrownError) { 
			msgBoard.val( msgBoard.val()+"失敗!!\n" );
			errorAjx(xhr);
		}
	});
	
	msgBoard.val( msgBoard.val()+"重新上線...." );
	
	$.ajax({ type:'post',url:"ReDepMemphis",dataType:'text',async:false,
		data: {depId:depId,empId:$.cookie("empId"),isDep:"true",fileName:fileName,
			apURL:$("#apURL").val(),apUSR:$("#apUSR").val(),apPWD:$("#apPWD").val(),apPORT:$("#apPORT").val(),
			svnURL:$("#svnURL").val(),svnUSR:$("#svnUSR").val(),svnPWD:$("#svnPWD").val(),squadId:squadId },
		success : function(res) {
			if ( res == "success" ) {
				msgBoard.val( msgBoard.val()+"成功\n" );
			} else {
				msgBoard.val( msgBoard.val()+"失敗!!\n" );
				$("#errLongMsg").html(res);
			}
		}, error : function(xhr, ajaxOptions, thrownError) {
			msgBoard.val( msgBoard.val()+"失敗!!\n" );
			errorAjx(xhr);
		}
	});
	
	//動作結束後，鎖住可以再觸發動作的以下六個鈕
	$("button.all").prop("disabled",true);
	$("button.single").prop("disabled",true);
	$("button.addFile").prop("disabled",true);
	$("select.inFile").prop("disabled",true);
	$("#btnDep").prop("disabled",true);
	$("#btnChkFile").prop("disabled",true);
	
	windowUnfreeze();
}

function buttonBind() {
	$("button.single").bind("click", function() {
		var squad= $(this).attr("squad");
		
		if( $(this).val()=="add" ) {
			$("select#outFile"+squad).append($("select#inFile"+squad+" option:selected"));
			$("select#inFile"+squad+" option:selected").remove();
		} else {
			$("select#inFile"+squad).append($("select#outFile"+squad+" option:selected"));
			$("select#outFile"+squad+" option:selected").remove();
		}
	});
	
	$("button.all").bind("click", function() {
		var squad= $(this).attr("squad");
		if( $(this).val()=="add" ) {
			$("select#outFile"+squad).append($("select#inFile"+squad).html());
			$("select#inFile"+squad).html("");
		} else {
			$("select#inFile"+squad).append($("select#outFile"+squad).html());
			$("select#outFile"+squad).html("");
		}
	});
	
	$("button.addFile").bind("click", function(){
		clearErrorMsg();
		windowFreeze();
		
		$("#btnTestSVNconn").click();
		var squad = $(this).attr("squad");
		if ( $("#errShortMsg").html().indexOf("連線正常") != -1 ) {
			 $("#errShortMsg").html("");
			
			var url = $("#svnURL").val();
			var usr = $("#svnUSR").val();
			var pwd = $("#svnPWD").val();
			
			$.ajax({ type:'post',url:'QuerySVNfileInJson',dataType:'text',async:false,
				data: {svnURL:url,svnUSR:usr,svnPWD:pwd },
				success : function(reses) {
					if ( reses.length != 3 ) {	//因為servlet那裡這樣寫，所以回傳 "]" 表示沒有找到
						reses = reses.substring(1,(reses.length-1));
						
						$.fn.zTree.init( $("#treeDirectory"),setting, JSON.parse(reses) );
						var treeObj = $.fn.zTree.getZTreeObj("treeDirectory");
						treeObj.expandAll(false);
						$("#dialogSVNdirectory").prop("title","選擇SVN路徑").css("visibility", "visible").dialog({
							resizable:true,width:300,modUnital:true,show:"fold",hide:"fold",
							buttons : {
								"確定" : function() {
								
							        var nodes = treeObj.getCheckedNodes(true);

							        $(nodes).each(function(i){
							        	if ( (this.icon).indexOf("file") !== -1 ) {	//只要檔案的node, 不要資料夾的node
							        		if ( $("#tbodyFile"+squad+" td[title='"+this.id+"']").size() == 0){	//不加重覆的檔案
							        			var verSets = (this.verSets).split(TOKENONE);
							        			var vs = "";
							        			for(var i=0;i<verSets.length;i++){
							        				vs += "<option value='"+verSets[i]+"'>"+verSets[i]+"</option>";
							        			}
							        			var idx= $("#tbodyFile"+squad+" > tr").size()+1;
												var tmp = "<tr fileVer='"+verSets[0]+"' fileName='"+this.name+"' squad='"+squad+"' class='rowFile"+squad+idx+"'>"+
												"<td class='center'><button class='btn"+verSets[0]+this.name+"' onclick=\"removeRow(this,'File"+squad+"')\" value='"+this.id+"' type='button'>-</button></td>"+
												"<td class='idx'>"+idx+"</td>"+
												"<td><select onchange=\"updateVer('"+squad+"','"+this.name+"');\">"+vs+"</select></td>"+
												"<td class='engN'>"+this.name+"</td>"+
												"<td class='engN' title='"+this.id+"' >"+(this.id==this.name?"根目錄":this.id)+"</td>"+
												"</tr>";
												
												$("#tbodyFile"+squad+"").append(tmp);
							        		} 
							        	}
									});
							        refreshUI(1,"tbodyFile"+squad+"",false);
									$(this).dialog("close");
								},"關閉" :function() {
									$(this).dialog("close");
								}
							}
						});
					} else {
						alert("SVN內無可部署的程式");
					}
				}, error : function(xhr, ajaxOptions, thrownError) { errorAjx(xhr); }
			});
		}
		
		windowUnfreeze();
	});
}


//檔案的版次更改時，要回寫保留在 tr的屬性值中，如此在欲送出時，檢查是否可部署時才有真實的資料
function updateVer(squad,fileName) {
	$("#tbodyFile"+squad+" tr[fileName='"+fileName+"']").attr("fileVer", $("#tbodyFile"+squad+" tr[fileName='"+fileName+"'] option:selected").val() );
}


$(document).ready(function(){
	
	init("dep.html");
	setMainDivWidth(initialValue);
	
	//因為 disabled 不會因refresh而重置，故下程式碼重置
	$(".editable").prop("disabled",false);
	$("button").prop("disabled",false);
	$("select.inFile").prop("disabled",false);
	
	$("#svnURL").val("http://10.144.136.56/svndps_test/dpssvn01/").prop("size", $("#svnURL").val().length * 0.8 );
	$("#svnUSR").val("dpssvn01").prop("size", $("#svnUSR").val().length * 0.8 );
	$("#svnPWD").val("abcd1234").prop("size", $("#svnPWD").val().length );
	
	$("#apURL").val("10.144.97.99").prop("size", $("#apURL").val().length * 0.8 );
	$("#apPORT").val("9999").prop("size", $("#apPORT").val().length * 0.8 );
	$("#apUSR").val("jboss").prop("size", $("#apUSR").val().length * 0.8 );
	$("#apPWD").val("jboss1234!@#$").prop("size", $("#apPWD").val().length );
	
	
	$("#btnDep").bind("click", function(){
		
		var msgBoard = $("textarea#depRes");
		
		//先清空既有訊息
		msgBoard.val("");	
		$("#errShortMsg").html("");
		$("#errLongMsg").html("");
		
		
		var depId = new Date().getTime(); //為了讓使用者可以看到執行的步驟，所以先這記錄這整組行動的識別
		var tabSize = $("#divTabs ul li").size();	//分頁數
			/* 1. 明確說要下線的
			2. 因為要部署同名的，先進行下線
			3. 部署 */
		var isSuccess = true;
		
		/*	檢查不得存在
			1. 兩個ServerGroup 部署了同檔名，但不同版次的檔案
		*/
		var arrFileList = [];
		var isDepable = true;	//不得存在的檢查通過時，就可以部署
		var squadALL = "";	//做部署記錄時要用，內含所有的squad值
		for ( var i=0; i<tabSize; i++ ) {
			var squadId = $("#liTab"+i+" a").html();	//目前的squad，即server-group
			squadALL += (squadId+TOKENONE);
			//每個分頁的欲部署檔案中取檢查
			$("#tbodyFile"+squadId+" tr").each(function(j){
				var fileName = $(this).attr("fileName");
				var fileVer = $(this).attr("fileVer");
				var isFileNotExisted = true;	//若檔案不在既有集合中，則要push進去
				for(var k=0;k<arrFileList.length;k++) {
			        if (arrFileList[k].name === fileName) {
			        	if (arrFileList[k].ver != fileVer) {
			        		isDepable = false;
			        	} else {
			        		isFileNotExisted = false;
			        	}
			        }
			        	
			    }
				if ( isFileNotExisted ) {
					/*
						type因為目前是在檢查 欲部署的檔案，所以必定是 1,全下!
						1==> 全下
						2==> 僅下部份ServerGroup
						3==> 不動作
						
						isFinish代表，部署的處理結果，false表未處理成功
					*/
					arrFileList.push({"name":fileName,"ver":fileVer,"type":1,"isFinish":false });
				}
			});
		}
		squadALL = squadALL.substring(0, (squadALL.length-TOKENONE.length));
		if ( isDepable ) {
			clearErrorMsg();
			windowFreeze("作業中請稍後...");
			/*
				檢查必須存在的調整
				1. 若存在 其中一個 ServerGroup要部署新檔，但該檔已在其它的ServerGroup，則讓使用者確定，其部署的結果會是，舊有的檔案在所有的ServerGroup皆下線，改成用新檔
				若使用者不願意，那動作必須暫停
			*/ 
			
			/* var needAdjust = false;
			for ( var i=0; i<tabSize; i++ ) {
				var squadId = $("#liTab"+i+" a").html();	//目前的squad，即server-group
				
			} */
			
			
			//開始調整add (即一個個的 server group)
			for ( var i=0; i<tabSize; i++ ) {
				var squadId = $("#liTab"+i+" a").html();	//目前的squad，即server-group
				$("div.tab"+i+" select#outFile"+squadId+" option").each( function(j) {	//存在需undeploy的
					var isNotExisted = true; 
					var fileName = $(this).val();
					for(var k=0;k<arrFileList.length;k++) {
						if (arrFileList[k].name === fileName ) {	//已經存在的，代表是全下，不用再新增
							isNotExisted = false;
						}
					}
					if ( isNotExisted ) {	//不存在，表示起碼是 部份上，若每個分頁都有，則要改成全下
						if ( $("select.inFile option[value='"+fileName+"']").size()==0 ) {	//表示沒有任何既有的ServerGroup要保留這個檔案了
							arrFileList.push({"name":fileName,"ver":0,"type":1,"isFinish":false });	
						} else {
							arrFileList.push({"name":fileName,"ver":0,"type":2,"isFinish":false });
						}
					}
				});
			}
			
			//現在起 arrFileList表示了所有要下線的檔案
			
			//部署完的檔案，因為只要Domain上面是否有這個檔案，會影響部署語法
			var arrDepSuccess = [];
			//一頁頁的分頁處理 (即一個個的 server group)
			for ( var i=0; i<tabSize; i++ ) {
				var squadId = $("#liTab"+i+" a").html();	//目前的squad，即server-group
				msgBoard.val( msgBoard.val()+squadId+" 開始處理...\n" );
				//檢查有無需 undeploy的
				
				var existHastoUndep = false;	//為了要部署，所以要將既有的反部署
				if ( $("div.tab"+i+" #tbodyFile"+squadId+" tr").size()>0 ) {
					$("div.tab"+i+" #tbodyFile"+squadId+" tr").each(function(k){
						var fileName = $(this).attr("fileName");
						if ( $("select.inFile option[value='"+fileName+"']").size()>0 || $("select.outFile option[value='"+fileName+"']").size()>0 ) {
							existHastoUndep=true;
						}
					});
				}
				
				//本身之前，欲部署的清單中，有沒有這個檔案
				if( $("div.tab"+i+" select#outFile"+squadId+" option").size()>0 || existHastoUndep  ) {	//存在需undeploy的
					msgBoard.val( msgBoard.val()+"\t存在必需下線的檔案\n" );
						
					$("div.tab"+i+" #tbodyFile"+squadId+" tr").each(function(k){
						var fileName = $(this).attr("fileName");	//欲undeploy的檔案名稱
						
						//原本有存在才有必要undeploy
						if( $("select.inFile option[value='"+fileName+"']").size()>0 || $("select.outFile option[value='"+fileName+"']").size()>0 ) {
							msgBoard.val( msgBoard.val()+"\t\t下線檔案名稱："+fileName+"(為了稍後的部署)\n" );
							var commandLine = "undeploy " + fileName + " --all-relevant-server-groups";
							for(var k=0;k<arrFileList.length;k++) {
								if (arrFileList[k].name === fileName ) {	//已經存在的，代表是全下，不用再新增
									if ( !arrFileList[k].isFinish ) {
										msgBoard.val( msgBoard.val()+"\t\t\t開始下線..." );
										$.ajax({ type:'post',url:"UnDepMemphis",dataType:'text',async:false,
											data: {depId:depId,empId:$.cookie("empId"),commandLine:commandLine,squadALL:squadALL,squadId:squadId,fileName:fileName,
												apURL:$("#apURL").val(),apUSR:$("#apUSR").val(),apPWD:$("#apPWD").val(),apPORT:$("#apPORT").val(), 
												svnURL:$("#svnURL").val(),svnUSR:$("#svnUSR").val(),svnPWD:$("#svnPWD").val() },
											success : function(res) {
												for(var k=0;k<arrFileList.length;k++) {
													if (arrFileList[k].name === fileName ) {
														arrFileList[k].isFinish = (res=="success") ;
													}
												}
												
												if ( res == "success" ) {
													msgBoard.val( msgBoard.val()+"成功\n" );
												} else {
													msgBoard.val( msgBoard.val()+"失敗!!\n" );
													$("#errLongMsg").html(res);
													isSuccess=false;
													$.ajax({ type:'post',url:"QueryMemphisDepMessage",dataType:'json',async:false},
													success : function(reses) {
														var resultMsg = msgBoard.val();
														$.each(reses, function(i, res) {
															resultMsg += "\n\n"; 
															resultMsg += "---"+res.s1 +"---\n";
															resultMsg += res.s2;
														});
														msgBoard.val(resultMsg);
													}, error : function(xhr, ajaxOptions, thrownError) { errorAjx(xhr); }
													});		
													
												}
											}, error : function(xhr, ajaxOptions, thrownError) { errorAjx(xhr); }
										});
									}
								}
							}
						}
					});
				
					//存在，那就開始一筆筆的處理
					$("div.tab"+i+" select#outFile"+squadId+" option").each(function(k){
						var fileName = $(this).val();	//欲undeploy的檔案名稱
						msgBoard.val( msgBoard.val()+"\t\t下線檔案名稱："+fileName+"\n" );
						
						//預設全部下線 <因為這個情形比較常見>
						var isFinish = true;
						var commandLine = "undeploy " + fileName + " --all-relevant-server-groups";
						for(var k=0;k<arrFileList.length;k++) {
							if (arrFileList[k].name === fileName ) {	//已經存在的，代表是全下，不用再新增
								if( arrFileList[k].type ==2 ) {
									commandLine = "undeploy " + fileName + " --server-groups="+squadId+" --keep-content"; //先預設還有這個檔案在
								}
								isFinish = arrFileList[k].isFinish;
							}
						}
						
						msgBoard.val( msgBoard.val()+"\t\t\t開始下線..." );
						
						if ( !isFinish ) {
							$.ajax({ type:'post',url:"UnDepMemphis",dataType:'text',async:false,
								data: {depId:depId,empId:$.cookie("empId"),commandLine:commandLine,squadALL:squadALL,squadId:squadId,fileName:fileName,
									apURL:$("#apURL").val(),apUSR:$("#apUSR").val(),apPWD:$("#apPWD").val(),apPORT:$("#apPORT").val(),
									svnURL:$("#svnURL").val(),svnUSR:$("#svnUSR").val(),svnPWD:$("#svnPWD").val() },
								success : function(res) {
									for(var k=0;k<arrFileList.length;k++) {
										if (arrFileList[k].name === fileName ) {
											arrFileList[k].isFinish = (res=="success") ;
										}
									}
									
									if ( res == "success" ) {
										msgBoard.val( msgBoard.val()+"成功\n" );
									} else {
										msgBoard.val( msgBoard.val()+"失敗!!\n" );
										$("#errLongMsg").html(res);
										isSuccess=false;
									}
								}, error : function(xhr, ajaxOptions, thrownError) { errorAjx(xhr); }
							});
						} else {
							msgBoard.val( msgBoard.val()+"成功\n" );
						}
					});
				} else {
					msgBoard.val( msgBoard.val()+"\t不存在需下線的檔案" );
				}
				
				msgBoard.val( msgBoard.val()+"\n" );
				
				//開始處理必需部署的檔案
				if( $("#tbodyFile"+squadId+ " tr").size()>0 ) {	//存在必需deploy的檔案
					msgBoard.val( msgBoard.val()+"\t存在必需部署的檔案\n" );
					$("#tbodyFile"+squadId+ " tr").each(function(i){
						var fileName = $(this).attr("fileName");
						var fileVer = $(this).attr("fileVer");
						var relativePath = $(this).children("td:last").html(); 
						
						var isExist=false;	//AP server上是否還有檔案

						
						//檢查這個檔是否在此次的下線清單，且是否已執行
						var isNotBeRemoved = true;
						for(var k=0;k<arrFileList.length;k++) {
							if (arrFileList[k].name === fileName ) {
								if ( arrFileList[k].isFinish) {
									isNotBeRemoved = false;
								}
							}
						}
						
						//大於0，且沒有沒下線，表示存server上仍存在有該檔
						var isStillOnServer =($("select.inFile option[value='"+fileName+"']").size()>0 && isNotBeRemoved);
						
						var isJustDepOnServer= false;
						for(var k=0;k<arrDepSuccess.length;k++) {
							if (arrDepSuccess[k].fn === fileName ) {
								isJustDepOnServer=true;
							}
						}
						//上面本來就還有，或是剛剛才部署上 
						if( isStillOnServer || isJustDepOnServer ) {	
							isExist=true;
						}
						
						msgBoard.val( msgBoard.val()+"\t\t部署檔案名稱："+fileName+",版次:"+fileVer+"\n" );
						msgBoard.val( msgBoard.val()+"\t\t\t開始部署..." );
						$.ajax({ type:'post',url:"DepMemphis",dataType:'text',async:false,
							data: {depId:depId,empId:$.cookie("empId"),relativePath:relativePath,isExist:isExist,squadId:squadId,fileName:fileName,fileVer:fileVer,
								apURL:$("#apURL").val(),apUSR:$("#apUSR").val(),apPWD:$("#apPWD").val(),apPORT:$("#apPORT").val(),
								svnURL:$("#svnURL").val(),svnUSR:$("#svnUSR").val(),svnPWD:$("#svnPWD").val() },
							success : function(res) {
								for(var k=0;k<arrFileList.length;k++) {
									if (arrFileList[k].name === fileName ) {
										arrFileList[k].isFinish = (res=="success") ;
									}
								}
								if ( res == "success" ) {
									arrDepSuccess.push({"fn":fileName});
									msgBoard.val( msgBoard.val()+"成功\n" );
								} else {
									msgBoard.val( msgBoard.val()+"失敗!!\n" );
									$("#errLongMsg").html(res);
									isSuccess=false;
								}
							}, error : function(xhr, ajaxOptions, thrownError) {
								msgBoard.val( msgBoard.val()+"失敗!!\n" );
								isSuccess=false;
								errorAjx(xhr);
							}
						});
						
					});
				} else {
					msgBoard.val( msgBoard.val()+"\t不存在必需部署的檔案\n" );
				}
				
			} //end of 一頁頁的分頁處理
			
			/* if ( isSuccess ) {
				$("#divTabs").html("<ul id='ulTabs'></ul>");
				$("#btnChkFile").click();
				$("#divTabs").tabs();
			} */
			windowUnfreeze();
		} else {
			$("#errShortMsg").html("不可以不同的SQUAD中，部署同名稱，但不同版次的檔案!");
		}
		
		//動作結束後，鎖住可以再觸發動作的以下六個鈕
		$("button.all").prop("disabled",true);
		$("button.single").prop("disabled",true);
		$("button.addFile").prop("disabled",true);
		$("select.inFile").prop("disabled",true);
		$("#btnDep").prop("disabled",true);
		$("#btnChkFile").prop("disabled",true);
		
	});
	
	
	$("#btnTestSVNconn").bind("click", function(){
		$("#errShortMsg").html("");
		var url = $("#svnURL").val();
		var usr = $("#svnUSR").val();
		var pwd = $("#svnPWD").val();
	
		var res = chkSVNconnection(url,usr,pwd);
		$("#errShortMsg").html(transSVNconnCode(res)+",  "+currentDateTime() );
	});
	
	
	$("#btnChkFile").button({ icons: { secondary:"ui-icon-gear" } }).bind("click", function(){
		//取得該ap server，目前的SQUAD
		$.ajax({ type:'post',url:"ChkAPdep",dataType:'json',
			data: {apURL:$("#apURL").val(),apUSR:$("#apUSR").val(),apPWD:$("#apPWD").val(),apPORT:$("#apPORT").val() },
			success : function(reses) {
				var dep = JSON.parse(reses);
				var tmp = "";
				
				for (var res in (dep["server-group"])) {
					var tabSize = $("#divTabs ul li").size();	//目前的分頁數
					
					tmp= "<li id='liTab"+tabSize+"'><a href='#"+res+"'>"+res+"</a></li>";
					$("#divTabs ul").append(tmp);
					
					tmp= "<div class='tab"+tabSize+"' id='"+res+"'>"+
					"<table id='tableFile"+res+"'><thead class='tableFirst'><tr><th colspan='5' class='center'>部署檔案</th></tr><tr><td><button squad='"+res+"' class='editable addFile' type='button'>+</button></td><th>#</th><th>版次</th><th>檔案名稱</th><th>相對路徑</th></tr></thead><tbody class='depFile' id='tbodyFile"+res+"'></tbody></table>"+
					"<p><hr><p><table id='parTable"+res+"'><tr><td rowspan='4'>既有檔案：<br><select ondblclick='confirmRedep(this)' squadId='"+res+"' class='inFile' id='inFile"+res+"' multiple='multiple' size='5'></select></td><td><button id='butAddAll' squad='"+res+"' value='add' class='all' type='button'>全部加入</button></td><td class='boldRed' rowspan='4'>下線檔案：<br><select class='outFile' id='outFile"+res+"' multiple='multiple' size='5'></select></td></tr><tr><td><button id='butAddSel' squad='"+res+"' value='add' class='single' type='button'>選取加入</button></td></tr><tr><td><button id='butRemoveSel' squad='"+res+"' value=remove class='single' type='button'>選取移除</button></td></tr><tr><td><button id='butRemoveAll' squad='"+res+"' value='remove' class='all' type='button'>全部移除</button></td></tr></table></div>";
					$("#divTabs").append(tmp);
					
					for (var res2 in (dep["server-group"][res].deployment)) {
						tmp = "<option value='"+res2+"'>"+res2+"</option>";
						$("#inFile"+res).append(tmp);
					}
				}
				
				buttonBind();
				$("button").button();
				$("#divTabs").tabs();
			}, error : function(xhr, ajaxOptions, thrownError) {errorAjx(xhr);}
		});
	});
	
	$("button").button();
});

</script>
</head>
<body>
	<div id="header"></div>		<!-- 畫面抬頭 -->

	<div id="mainDiv" style="position:relative">
	
	<div style="position:absolute;padding-left:10px;padding-right:10px;right:0;">
		<table>
			<tr><td class="left" colspan="2"><label class="thStyle" >JBOSS 設定</label></td></tr>
			<tr><td> &nbsp;</td><td class="left">SQUADS</td></tr>
			<tr><td class="verTop">
				<table>
					<tr>
						<th class="right tabModDefRight">IP：</th>
						<td class="left"><input type="text" id="apURL" class="engN" /> </td>
					</tr>
					<tr>
						<th class="right tabModDefRight">Port：</th>
						<td class="left"><input type="text" id="apPORT" class="engN" /><button type="button" id="btnChkFile">&nbsp;</button> </td>
					</tr>
					<tr>
						<th class="right tabModDefRight">帳號：</th>
						<td class="left"><input type="text" id="apUSR" class="engN"/> </td>
					</tr>
					<tr>
						<th class="right tabModDefRight">密碼：</th>
						<td class="left"><input type="password" id="apPWD" class="engN"/> </td>
					</tr>
				</table>
			</td>
			<td class="verTop "><div id="divTabs"><ul id="ulTabs"></ul></div></td>
		</table>	
		
	</div>
	<table>
		<tr><td class="left"><label class="thStyle" >部署訊息</label></td><td class="right"><button type="button" id="btnDep">開始部署</button></td></tr>
		<tr><td colspan="2"><textarea readonly rows="5" cols="65" id="depRes"></textarea></td></tr>
	</table>
	<p>
		<table>
			<tr><td class="left" colspan="2"><label class="thStyle" >SVN 設定</label></td></tr>
			<tr><td colspan="2"> &nbsp;</td></tr>
			<tr>
				<th class="right">repo url：</th>
				<td class="left"><input type="text" id="svnURL" class="engN" /> </td>
			</tr>
			<tr>
				<th class="right">帳號：</th>
				<td class="left"><input type="text" id="svnUSR" class="engN"/> </td>
			</tr>
			<tr>
				<th class="right">密碼：</th>
				<td class="left"><input type="password" id="svnPWD" class="engN"/> </td>
			</tr>
			<tr><td>&nbsp;</td><td class="left"><button type="button" id="btnTestSVNconn">測試連線</button></td></tr>
			<tr><td colspan="2"> &nbsp;</td></tr>
		</table>

		
	</div>
	<p>
	<p>
</body>



<div class="dialog" id="dialogSVNdirectory">
	<ul id="treeDirectory" class="ztree"></ul>
</div>



<!-- 單純確認的對話框 -->
<div class="dialog" id="diaConfirm"></div>

</html>